﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DECOR.BL.BE;
using DECOR.BL.BC;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.Collections.Specialized;

namespace DECOR.Touchapp
{
    public partial class editarReclamo : System.Web.UI.Page
    {
        string pRetval = "";
        string pNumeroReclamo = ""; //parametro que viene de sencha
        DocReclamoBE Doc = null;
        string Json = "";

        string fechaI = "";
        string horaReclamoI = "";
        string fechaF = "";
        string horaReclamoF = "";
        string fechaSts = "";
        string codigoEmpleado = ""; //es el codigo de usuario
        string nombreEmpleado = ""; //es el nombre del usuario 
        string empresa = "";
        string numeroPedido = ""; //parametro que viene de sencha
        string comentario = "";
        string material1 = "";
        string material2 = "";
        string reclamoRef = "";
        //listas 
        List<GenericBE> lstOficinas = new List<GenericBE>();
        List<GenericBE> lstTipoDocumento = new List<GenericBE>();
        List<GenericBE> lstGrupoVendedores = new List<GenericBE>();
        List<GenericBE> lstSectores = new List<GenericBE>();
        List<GenericBE> lstMotivos = new List<GenericBE>();
        List<GenericBE> lstGrupoCond = new List<GenericBE>();
        List<GenericBE> lstBloqueoEntrega = new List<GenericBE>();
        List<GenericBE> lstBloqueoFactura = new List<GenericBE>();
        List<GenericBE> lstVendedores = new List<GenericBE>();
        List<GenericBE> lstCodigoPostal = new List<GenericBE>();
        List<GenericBE> lstTipoVisita = new List<GenericBE>();
        List<GenericBE> lvLstPrioridadEnt = new List<GenericBE>();

        string TextoTratemInicial = "";
        string TextoNotaDireccion = "";
        string TextoSeguimiento = "";
        string TextoDiagnostico = "";
        string TextoSolucion = "";
        string TextoPersonaContacto = "";
        string TextoDatosFacturacion = "";
        string TextoPedidoReferencia = "";
        string TextoMotivosOtros = "";

        string PersonaContacto = "";
        string NomPContac = "";
        string DirPContac = "";
        string NIFCont = "";
        string TelfCont = "";
        string CodpPContac = "";

        string NomCliente = "";
        // lleno datos del panel
        string EmpresaDet = "";
        string NomEmpresa = "";
        string DirEmpresa = "";
        string TelfEmpre = "";
        string EMail = "";
        string NIF = "";
        string CodpEmpresa = "";
        string CodDestMerc = "";
        string NomDestMerc = "";
        string DirDestMerc = "";
        string CodpDestMerc = "";
        string CodECom = "";
        string NomECom = "";
        string codigoEmpResp = "";
        string nombreEmpResp = "";
        string CodResPago = "";
        string NomResPago = "";
        string OrgVenta = "";
        string Canal = "";
        string OfiVenta = "";
        string Motivo = "";
        string Resultado = "";
        string JustificResul = "";
        string Sector = "";
        string Status = "";
        string UsuarioStatus = "";
        string Descripcion = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Request.HttpMethod.Equals("POST"))
            {

            }
            else
            {
                //NameValueCollection param = new NameValueCollection();
                //param.Add("Id", Session.SessionID);
                //param.Add("UserId", "VENDEDORLM");
                //param.Add("PwdId", "DECORCENTER");
                CredencialesController.cargarInfo(Request.Params); //(SIEMPRE)
                pNumeroReclamo = Request.Params["pNumeroReclamo"]; //"0100001768"; //
                pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, ";
                
                pRetval += "\"reclamo\": [{";

                pRetval += "\"pNumeroReclamo\": \"{2}\", \"fechaI\": \"{3}\", ";
                pRetval += "\"fechaF\": \"{4}\", \"horaReclamoI\": \"{5}\", ";
                pRetval += "\"horaReclamoF\": \"{6}\", \"empresa\": \"{7}\", ";
                pRetval += "\"numeroPedido\": \"{8}\", \"comentario\": \"{9}\", ";
                pRetval += "\"material1\": \"{10}\", \"material2\": \"{11}\", ";
                pRetval += "\"reclamoRef\": \"{12}\", \"TextoTratemInicial\": \"{13}\", ";
                pRetval += "\"TextoNotaDireccion\": \"{14}\", \"TextoSeguimiento\": \"{15}\", ";
                pRetval += "\"TextoDiagnostico\": \"{16}\", \"TextoSolucion\": \"{17}\", ";
                pRetval += "\"TextoPersonaContacto\": \"{18}\", \"TextoDatosFacturacion\": \"{19}\", ";
                pRetval += "\"TextoPedidoReferencia\": \"{20}\", \"TextoMotivosOtros\": \"{21}\", ";
                pRetval += "\"mail\": \"{22}\", \"_nif\": \"{23}\", ";
                pRetval += "\"PersonaContacto\": \"{24}\", \"NomPContac\": \"{25}\", ";
                pRetval += "\"DirPContac\": \"{26}\", \"NIFCont\": \"{27}\", ";
                pRetval += "\"TelfCont\": \"{28}\", \"CodpPContac\": \"{29}\", ";
                pRetval += "\"NomCliente\": \"{30}\", \"EmpresaDet\": \"{31}\", ";
                pRetval += "\"NomEmpresa\": \"{32}\", \"DirEmpresa\": \"{33}\", ";
                pRetval += "\"TelfEmpre\": \"{34}\", \"CodpEmpresa\": \"{35}\", ";
                pRetval += "\"CodDestMerc\": \"{36}\", \"NomDestMerc\": \"{37}\", ";
                pRetval += "\"DirDestMerc\": \"{38}\", \"CodpDestMerc\": \"{39}\", ";
                pRetval += "\"CodECom\": \"{40}\", \"NomECom\": \"{41}\", ";
                pRetval += "\"codigoEmpResp\": \"{42}\", \"nombreEmpResp\": \"{43}\", ";
                pRetval += "\"CodResPago\": \"{44}\", \"NomResPago\": \"{45}\", ";
                pRetval += "\"OrgVenta\": \"{46}\", \"Canal\": \"{47}\", ";
                pRetval += "\"OfiVenta\": \"{48}\", \"Motivo\": \"{49}\", ";
                pRetval += "\"Resultado\": \"{50}\", \"JustificResul\": \"{51}\", ";
                pRetval += "\"lstJusti\": {52}, \"Sector\": \"{53}\", ";
                pRetval += "\"Status\": \"{54}\", \"UsuarioStatus\": \"{55}\", ";
                pRetval += "\"Descripcion\": \"{56}\", \"fechaSts\": \"{57}\"";
                pRetval += "}], ";
                pRetval += "\"objReclamo\": {58} ";
                pRetval += "}";

                EditarReclamo();

                Response.ContentType = "application/json; charset=UTF-8";
                Response.Write(pRetval);
            }
        }

        private void EditarReclamo()
        {
            string retval = string.Empty;
            
            if (pNumeroReclamo.Trim('0').Trim().Equals(""))
            {
                pRetval = pRetval.Replace("{0}", "false");
                pRetval = pRetval.Replace("{1}", "Ingrese un número de pedido.");
            }
            else
            {
                Doc = ReclamoBC.Instance.getReclamo(pNumeroReclamo.PadLeft(10, '0'));
                cargarReclamo();

                if (Doc != null)
                {
                    Json = JsonConvert.SerializeObject(Doc);
                    pRetval = pRetval.Replace("{58}", Json);
                }
                else
                {
                    pRetval = pRetval.Replace("{58}", "null");
                }
            }
        }

        private void cargarReclamo()
        {
            string retval = string.Empty;
            pNumeroReclamo = Doc.Contactos.VBELN.PadLeft(10, '0');
            pRetval = pRetval.Replace("{2}", pNumeroReclamo);

            ParametroBC.Instance.getDataDDL(ref lstCodigoPostal, ref lstVendedores,
                    ref lstBloqueoEntrega, ref lstBloqueoFactura,
                    ref lvLstPrioridadEnt, ref lstGrupoCond, ref lstGrupoVendedores, ref lstMotivos, ref lstOficinas, ref lstSectores,
                    ref lstTipoDocumento, ref lstTipoVisita);

            if (Doc != null)
            {
                fechaI = Doc.Contactos.KTABG.ToShortDateString();
                fechaF = Doc.Contactos.KTAEN.ToShortDateString();
                horaReclamoI = Doc.Contactos.KTABT;
                horaReclamoF = Doc.Contactos.KTAET;
                empresa = Doc.Contactos.KUNNR;
                numeroPedido = Doc.Contactos.VGBEL.PadLeft(10, '0');
                comentario = Doc.Contactos.KTEXT.Trim();
                //Tabla Z
                material1 = Doc.Z_Reclamo.MATNR == null ? "" : Doc.Z_Reclamo.MATNR.Trim('0');
                material2 = Doc.Z_Reclamo.MATNR2 == null ? "" : Doc.Z_Reclamo.MATNR2.Trim('0');
                reclamoRef = Doc.Z_Reclamo.RECLA == null ? "" : Doc.Z_Reclamo.RECLA.Trim('0');

                pRetval = pRetval.Replace("{0}", "true");
                pRetval = pRetval.Replace("{1}", "");
                pRetval = pRetval.Replace("{3}", fechaI);
                pRetval = pRetval.Replace("{4}", fechaF);
                pRetval = pRetval.Replace("{5}", horaReclamoI);
                pRetval = pRetval.Replace("{6}", horaReclamoF);
                pRetval = pRetval.Replace("{7}", empresa);
                pRetval = pRetval.Replace("{8}", numeroPedido);
                pRetval = pRetval.Replace("{9}", comentario);
                pRetval = pRetval.Replace("{10}", material1);
                pRetval = pRetval.Replace("{11}", material2);
                pRetval = pRetval.Replace("{12}", reclamoRef);

                if (Doc.Texto.Count <= 0)
                {
                    pRetval = pRetval.Replace("{13}", "");
                    pRetval = pRetval.Replace("{14}", "");
                    pRetval = pRetval.Replace("{15}", "");
                    pRetval = pRetval.Replace("{16}", "");
                    pRetval = pRetval.Replace("{17}", "");
                    pRetval = pRetval.Replace("{18}", "");
                    pRetval = pRetval.Replace("{19}", "");
                    pRetval = pRetval.Replace("{20}", "");
                    pRetval = pRetval.Replace("{21}", "");
                }
                else
                {
                    // Textos
                    foreach (TextoBE t in Doc.Texto)
                    {
                        if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO1")))
                        {
                            TextoTratemInicial = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{13}", TextoTratemInicial);
                        }
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO2")))
                        {
                            TextoNotaDireccion = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{14}", TextoNotaDireccion);
                        }
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO3")))
                        {
                            TextoSeguimiento = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{15}", TextoSeguimiento);
                        }
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO4")))
                        {
                            TextoDiagnostico = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{16}", TextoDiagnostico);
                        }
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO5")))
                        {
                            TextoSolucion = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{17}", TextoSolucion);
                        }
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO6")))
                        {
                            TextoPersonaContacto = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{18}", TextoPersonaContacto);
                        }
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO7")))
                        {
                            TextoDatosFacturacion = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{19}", TextoDatosFacturacion);
                        }
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO8")))
                        {
                            TextoPedidoReferencia = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{20}", TextoPedidoReferencia);
                        }
                        else if (t.CodTexto.Equals(ParametroBC.Instance.getParamValue("TEXTO9")))
                        {
                            TextoMotivosOtros = t.Descripcion.Trim();
                            pRetval = pRetval.Replace("{21}", TextoMotivosOtros);
                        }
                    }
                    //si en caso no encontro un texto, reemplazos el que encuentre.
                    pRetval = pRetval.Replace("{13}", "");
                    pRetval = pRetval.Replace("{14}", "");
                    pRetval = pRetval.Replace("{15}", "");
                    pRetval = pRetval.Replace("{16}", "");
                    pRetval = pRetval.Replace("{17}", "");
                    pRetval = pRetval.Replace("{18}", "");
                    pRetval = pRetval.Replace("{19}", "");
                    pRetval = pRetval.Replace("{20}", "");
                    pRetval = pRetval.Replace("{21}", "");
                }
                
                //interlocutores
                if (Doc.Interlocutor != null && Doc.Interlocutor.Count > 0)
                {
                    cargarDatosInter();
                }
                else
                {
                    pRetval = pRetval.Replace("{22}", "");
                    pRetval = pRetval.Replace("{23}", "");
                    pRetval = pRetval.Replace("{24}", "");
                    pRetval = pRetval.Replace("{25}", "");
                    pRetval = pRetval.Replace("{26}", "");
                    pRetval = pRetval.Replace("{27}", "");
                    pRetval = pRetval.Replace("{28}", "");
                    pRetval = pRetval.Replace("{29}", "");
                    pRetval = pRetval.Replace("{30}", "");
                    pRetval = pRetval.Replace("{31}", "");
                    pRetval = pRetval.Replace("{32}", "");
                    pRetval = pRetval.Replace("{33}", "");
                    pRetval = pRetval.Replace("{34}", "");
                    pRetval = pRetval.Replace("{35}", "");
                    pRetval = pRetval.Replace("{36}", "");
                    pRetval = pRetval.Replace("{37}", "");
                    pRetval = pRetval.Replace("{38}", "");
                    pRetval = pRetval.Replace("{39}", "");
                    pRetval = pRetval.Replace("{40}", "");
                    pRetval = pRetval.Replace("{41}", "");
                    pRetval = pRetval.Replace("{42}", "");
                    pRetval = pRetval.Replace("{43}", "");
                    pRetval = pRetval.Replace("{44}", "");
                    pRetval = pRetval.Replace("{45}", "");
                }
                cargarInfoCliente();
                //combos
                cargaCombos();
                //seleccionar grupo vendedores                
                Resultado = Doc.Contactos.KTAER;
                pRetval = pRetval.Replace("{50}", Resultado);
                Motivo = Doc.Contactos.KTAGR;
                pRetval = pRetval.Replace("{49}", Motivo);
                //estatus
                Status = Doc.Contactos.KTAST;
                pRetval = pRetval.Replace("{54}", Status);

                if (Doc.Z_Reclamo.STAT4 != null && Doc.Z_Reclamo.STAT3 != null && Doc.Z_Reclamo.STAT2 != null && Doc.Z_Reclamo.STAT1 != null)
                {
                    if (!Doc.Z_Reclamo.STAT4.Equals("") &&
                        ((ParametroBC.Instance.esTipoX(Doc.Contactos.KTAST, "Sts5"))))
                    {
                        UsuarioStatus = Doc.Z_Reclamo.USER4;
                        Descripcion = Doc.Z_Reclamo.CMM4;
                        fechaSts = Doc.Z_Reclamo.FCHA4.ToShortDateString();
                        pRetval = pRetval.Replace("{55}", UsuarioStatus);
                        pRetval = pRetval.Replace("{56}", Descripcion);
                        pRetval = pRetval.Replace("{57}", fechaSts);
                    }
                    else if (!Doc.Z_Reclamo.STAT3.Equals("") &&
                        ((ParametroBC.Instance.esTipoX(Doc.Contactos.KTAST, "Sts3")) ||
                            (ParametroBC.Instance.esTipoX(Doc.Contactos.KTAST, "Sts4"))))
                    {
                        UsuarioStatus = Doc.Z_Reclamo.USER3;
                        Descripcion = Doc.Z_Reclamo.CMM3;
                        fechaSts = Doc.Z_Reclamo.FCHA3.ToShortDateString();
                        pRetval = pRetval.Replace("{55}", UsuarioStatus);
                        pRetval = pRetval.Replace("{56}", Descripcion);
                        pRetval = pRetval.Replace("{57}", fechaSts);
                    }
                    else if (!Doc.Z_Reclamo.STAT2.Equals("") &&
                        (ParametroBC.Instance.esTipoX(Doc.Contactos.KTAST, "Sts2")))
                    {
                        UsuarioStatus = Doc.Z_Reclamo.USER2;
                        Descripcion = Doc.Z_Reclamo.CMM2;
                        fechaSts = Doc.Z_Reclamo.FCHA2.ToShortDateString();
                        pRetval = pRetval.Replace("{55}", UsuarioStatus);
                        pRetval = pRetval.Replace("{56}", Descripcion);
                        pRetval = pRetval.Replace("{57}", fechaSts);
                    }
                    else if (!Doc.Z_Reclamo.STAT1.Equals("") &&
                        (ParametroBC.Instance.esTipoX(Doc.Contactos.KTAST, "Sts1")))
                    {
                        UsuarioStatus = Doc.Z_Reclamo.USER1;
                        Descripcion = Doc.Z_Reclamo.CMM1;
                        fechaSts = Doc.Z_Reclamo.FCHA1.ToShortDateString();
                        pRetval = pRetval.Replace("{55}", UsuarioStatus);
                        pRetval = pRetval.Replace("{56}", Descripcion);
                        pRetval = pRetval.Replace("{57}", fechaSts);
                    }
                }                
            }
        }

        private void cargarDatosInter()
        {
            string ag = string.Empty;
            string ap = string.Empty;
            string zm = string.Empty;
            string ES = string.Empty;
            //ParametroWS.ParametroWS p = new DECOR.WebApp.ParametroWS.ParametroWS();
            List<GenericBE> lstOficinas = new List<GenericBE>();
            List<GenericBE> lstTipoDocumento = new List<GenericBE>();
            List<GenericBE> lstGrupoVendedores = new List<GenericBE>();
            List<GenericBE> lstSectores = new List<GenericBE>();
            List<GenericBE> lstMotivos = new List<GenericBE>();
            List<GenericBE> lstGrupoCond = new List<GenericBE>();
            List<GenericBE> lstBloqueoEntrega = new List<GenericBE>();
            List<GenericBE> lstBloqueoFactura = new List<GenericBE>();
            List<GenericBE> lstVendedores = new List<GenericBE>();
            List<GenericBE> lstCodigoPostal = new List<GenericBE>();
            List<GenericBE> lstTipoVisita = new List<GenericBE>();
            List<GenericBE> lvLstPrioridadEnt = new List<GenericBE>();
            
            ParametroBC.Instance.getDataDDL(ref lstCodigoPostal, ref lstVendedores,
                    ref lstBloqueoEntrega, ref lstBloqueoFactura,
                    ref lvLstPrioridadEnt, ref lstGrupoCond, ref lstGrupoVendedores, ref lstMotivos, ref lstOficinas, ref lstSectores,
                    ref lstTipoDocumento, ref lstTipoVisita);

            if (!empresa.Trim().Equals(""))
            {
                bool es = false;
                foreach (InterlocutorReclamoBE i in Doc.Interlocutor)
                {
                    if (i.PARVW.Equals("AG"))
                    {
                        ag = Doc.Interlocutor.Find(x => x.PARVW.Equals("AG")).KUNNR;
                        es = ReclamoBC.Instance.getInterXEmpresa(ag, ap,
                                                                       zm, string.Empty, string.Empty, string.Empty).Find(x => x.PARVW.Equals("AG")).EsVentual;

                        if (es)
                        {
                            ag = Doc.Interlocutor.Find(x => x.PARVW.Equals("AG")).ADRNR;
                            ES = "X";
                        }
                    }
                    else if (i.PARVW.Equals("AP"))
                        ap = Doc.Interlocutor.Find(x => x.PARVW.Equals("AP")).PARNR;
                    else if (i.PARVW.Equals("ZM"))
                        zm = Doc.Interlocutor.Find(x => x.PARVW.Equals("ZM")).PERNR;
                }
                string mail = Doc.Interlocutor.Find(x => x.PARVW.Equals("AG")).Mail;
                string _nif = Doc.Interlocutor.Find(x => x.PARVW.Equals("AG")).NIF;

                pRetval = pRetval.Replace("{22}", mail);
                pRetval = pRetval.Replace("{23}", _nif);

                List<GenericBE> ladrnr = new List<GenericBE>();
                foreach (InterlocutorReclamoBE g in Doc.Interlocutor)
                {
                    GenericBE i = new GenericBE();
                    i.Codigo = g.PARVW;
                    i.Descripcion = g.ADRNR;
                    ladrnr.Add(i);
                }

                Doc.Interlocutor = ReclamoBC.Instance.getInterXEmpresa(ag, ap,
                                                                   zm, string.Empty, string.Empty, ES);

                foreach (InterlocutorReclamoBE g in Doc.Interlocutor)
                {
                    if (ladrnr.Find(x => x.Codigo.Equals(g.PARVW)) != null)
                    {
                        g.ADRNR = ladrnr.Find(x => x.Codigo.Equals(g.PARVW)).Descripcion.Trim();
                    }
                }

                if (Doc.Z_Reclamo != null)
                {
                    PersonaContacto = Doc.Z_Reclamo.PCONTACTO.Trim();
                    NomPContac = Doc.Z_Reclamo.PCONTACTO.Trim();
                    DirPContac = Doc.Z_Reclamo.DIRECCION.Trim();
                    NIFCont = Doc.Z_Reclamo.NIF.Trim();
                    TelfCont = Doc.Z_Reclamo.TELEFONO.Trim();

                    pRetval = pRetval.Replace("{24}", PersonaContacto);
                    pRetval = pRetval.Replace("{25}", NomPContac);
                    pRetval = pRetval.Replace("{26}", DirPContac);
                    pRetval = pRetval.Replace("{27}", NIFCont);
                    pRetval = pRetval.Replace("{28}", TelfCont);
                }
                if (lstCodigoPostal.Find(x => x.Codigo.Equals(Doc.Z_Reclamo.CPOSTAL)) != null)
                {
                    CodpPContac = Doc.Z_Reclamo.CPOSTAL;
                    pRetval = pRetval.Replace("{29}", CodpPContac);
                }

                foreach (InterlocutorReclamoBE i in Doc.Interlocutor)
                {
                    if (i.PARVW.Equals("AG"))//EMPRESA 
                    {
                        empresa = i.KUNNR;
                        NomCliente = i.NOMBRE;
                        // lleno datos del panel
                        EmpresaDet = i.KUNNR;
                        NomEmpresa = i.NOMBRE;
                        DirEmpresa = i.Direccion;
                        TelfEmpre = i.Telefono;
                        EMail = mail;
                        NIF = _nif;

                        pRetval = pRetval.Replace("{7}", empresa);
                        pRetval = pRetval.Replace("{30}", NomCliente);
                        pRetval = pRetval.Replace("{31}", EmpresaDet);
                        pRetval = pRetval.Replace("{32}", NomEmpresa);
                        pRetval = pRetval.Replace("{33}", DirEmpresa);
                        pRetval = pRetval.Replace("{34}", TelfEmpre);
                        pRetval = pRetval.Replace("{22}", EMail);
                        pRetval = pRetval.Replace("{23}", NIF);

                        if (lstCodigoPostal.Find(x => x.Codigo.Equals(i.CodPostal)) != null)
                        {
                            CodpEmpresa = i.CodPostal;
                            pRetval = pRetval.Replace("{35}", CodpEmpresa);
                        }                            
                        else
                        {
                            //Session["Mensaje"] = "El código postal de la empresa no existe";
                            pRetval = pRetval.Replace("{1}", "false");
                            pRetval = pRetval.Replace("{2}", "El código postal de la empresa no existe.");
                            break;
                        }
                    }
                    else if (i.PARVW.Equals("WE"))//DESTINATARIO DE MERCANCIA
                    {
                        // lleno datos del panel
                        CodDestMerc = i.KUNNR;
                        NomDestMerc = i.NOMBRE;
                        DirDestMerc = i.Direccion;

                        pRetval = pRetval.Replace("{36}", CodDestMerc);
                        pRetval = pRetval.Replace("{37}", NomDestMerc);
                        pRetval = pRetval.Replace("{38}", DirDestMerc);

                        if (lstCodigoPostal.Find(x => x.Codigo.Equals(i.CodPostal)) != null)
                        {
                            CodpDestMerc = i.CodPostal;
                            pRetval = pRetval.Replace("{39}", CodpDestMerc);
                        }                            
                        else
                        {
                            //Session["Mensaje"] = "El código postal del destinatario  no existe";
                            pRetval = pRetval.Replace("{1}", "false");
                            pRetval = pRetval.Replace("{2}", "El código postal de la empresa no existe.");
                        }
                    }
                    else if (i.PARVW.Equals("VE"))//ENCARGADO COMERCIAL
                    {                        
                        CodECom = i.PERNR;
                        NomECom = i.NOMBRE;

                        pRetval = pRetval.Replace("{40}", CodECom);
                        pRetval = pRetval.Replace("{41}", NomECom);
                    }
                    else if (i.PARVW.Equals("ZM"))//EMPLEADO RESPONSABLE
                    {
                        codigoEmpResp = i.PERNR;
                        nombreEmpResp = i.NOMBRE;
                        //lleno el panel de detalle
                        CodResPago = i.PERNR;
                        NomResPago  = i.NOMBRE;

                        pRetval = pRetval.Replace("{42}", codigoEmpResp);
                        pRetval = pRetval.Replace("{43}", nombreEmpResp);
                        pRetval = pRetval.Replace("{44}", CodResPago);
                        pRetval = pRetval.Replace("{45}", NomResPago);
                    }
                }
            }
        }

        private void cargarInfoCliente()
        {
            //cargar data de Organización de Ventas
            if (Doc.Interlocutor.Count > 0)
            {
                List<GenericBE> lstOrgVtas = ClienteBC.Instance.listaOrgVtas(Doc.Interlocutor.Find(X => X.PARVW.Equals("AG")).KUNNR);

                if (!(Doc == null))
                {
                    if (!Doc.Contactos.VKORG.Equals(""))
                    {
                        OrgVenta = Doc.Contactos.VKORG;
                        pRetval = pRetval.Replace("{46}", OrgVenta);
                    }
                    else
                    {
                        pRetval = pRetval.Replace("{46}", "");
                    }
                }
                if (lstOrgVtas.Count > 0)
                {
                    List<GenericBE> lstCanalDist = null;
                    lstCanalDist = ClienteBC.Instance.listaCanalDist(Doc.Interlocutor.Find(X => X.PARVW.Equals("AG")).KUNNR,
                                                                         Doc.Contactos.VKORG);
                    if (!(Doc == null))
                    {
                        if (lstCanalDist.Find(x => x.Codigo.Equals(Doc.Contactos.VTWEG)) != null)
                            if (!Doc.Contactos.VTWEG.Equals(""))
                            {
                                Canal = Doc.Contactos.VTWEG;
                                pRetval = pRetval.Replace("{47}", Canal);
                            }
                            else
                            {
                                pRetval = pRetval.Replace("{47}", "");
                            }
                    }
                }
                else
                {
                    //enviar una lista vacia y la variable canal en blanco                    
                }

                //Oficina de Ventas
                List<GenericBE> lst = new List<GenericBE>();
                lst = OficinaBC.Instance.listar();
                if (!(Doc == null))
                    if (!Doc.Contactos.VKBUR.Equals(""))
                    {
                        OfiVenta = Doc.Contactos.VKBUR;
                        pRetval = pRetval.Replace("{48}", OfiVenta);
                    }
                    else
                    {
                        pRetval = pRetval.Replace("{48}", "");
                    }
            }
            else //si no existe el cliente seleccionado:
            {
                //enviar una lista vacia y la variable OrgVenta en blanco
                //enviar una lista vacia y la variable Canal en blanco
                pRetval = pRetval.Replace("{46}", "");
                pRetval = pRetval.Replace("{47}", "");
                pRetval = pRetval.Replace("{48}", "");
            }
        }

        private void cargaCombos()
        {
            CombosReclamoBE combos = ReclamoBC.Instance.getCombosReclamo();
            List<JustificaionBE> lstJusti = new List<JustificaionBE>();
            List<JustificaionBE> lstVende = new List<JustificaionBE>();
            List<GenericBE> lstMotiv = new List<GenericBE>();
            List<GenericBE> lstResul = new List<GenericBE>();
            List<GenericBE> lstSecto = new List<GenericBE>();
            List<GenericBE> lstStatu = new List<GenericBE>();

            //justificacion
            lstJusti = combos.T_Justi;
            lstVende = combos.T_VENDEDORES;
            lstMotiv = combos.T_MOTIVO;
            lstResul = combos.T_RESULTADO;
            lstSecto = combos.T_SECTOR;
            lstStatu = combos.T_STATUS;
            //---------------------------------------------------------
            //selecciono valores
            List<GenericBE> lst = null;
            if (!(Doc == null))
            {
                if (Doc.Contactos.KTAGR != null)
                {
                    Motivo = Doc.Contactos.KTAGR;
                    pRetval = pRetval.Replace("{49}", Motivo);
                }
                else
                {
                    pRetval = pRetval.Replace("{49}", "");
                }

                if (!Doc.Contactos.KTAER.Equals(""))
                {
                    //if (((string)Session["Operacion"]).Equals("crear") && ddlResultado.SelectedIndex == 0){DocReclamo.Contactos.KTAER = "004";}

                    Resultado = Doc.Contactos.KTAER;
                    pRetval = pRetval.Replace("{50}", Resultado);
                    lst = cargarJustificacion(Resultado, lstJusti);
                    if (lst.Count > 0)
                    {
                        //enviar lst
                        Json = JsonConvert.SerializeObject(lst);
                        pRetval = pRetval.Replace("{52}", Json);
                    }
                    else
                    {
                        pRetval = pRetval.Replace("{52}", "null");
                    }
                    if (Doc != null)
                        if (!Doc.Contactos.KTAEB.Equals(""))
                        {
                            JustificResul = Doc.Contactos.KTAEB;
                            pRetval = pRetval.Replace("{51}", JustificResul);
                        }
                        else
                        {
                            pRetval = pRetval.Replace("{51}", "");
                        }
                }
                else
                {
                    Doc.Contactos.KTAER = "004";
                    Resultado = Doc.Contactos.KTAER;
                    pRetval = pRetval.Replace("{50}", Resultado != "" ? Resultado : "");
                    lst = cargarJustificacion(Resultado, lstJusti);
                    if (lst.Count > 0)
                    {
                        //enviar lst
                        Json = JsonConvert.SerializeObject(lst);
                        pRetval = pRetval.Replace("{52}", Json);
                    }
                    else
                    {
                        pRetval = pRetval.Replace("{52}", "null");
                    }
                }

                if (!Doc.Contactos.SPART.Equals(""))
                {
                    Sector = Doc.Contactos.SPART;
                    pRetval = pRetval.Replace("{53}", Sector);
                }
                else
                {
                    pRetval = pRetval.Replace("{53}", "");
                }
                if (!Doc.Contactos.KTAST.Equals(""))
                {
                    Status = Doc.Contactos.KTAST;
                    pRetval = pRetval.Replace("{54}", Status);
                }
                else
                {
                    pRetval = pRetval.Replace("{54}", "");
                }
            }

            if (!(Doc == null))
            {
                InterlocutorReclamoBE AG = Doc.Interlocutor.Find(X => X.PARVW.Equals("AG"));
                if (AG != null)
                    if (lstCodigoPostal.Find(x => x.Codigo.Equals(AG.CodPostal)) != null && !AG.CodPostal.Equals(""))
                    {
                        CodpEmpresa = AG.CodPostal;
                        pRetval = pRetval.Replace("{35}", CodpEmpresa);
                    }
                    else
                    {
                        pRetval = pRetval.Replace("{35}", "");
                    }
                if (Doc.Z_Reclamo.CPOSTAL != null)
                    if (!Doc.Z_Reclamo.CPOSTAL.Equals(""))
                        if (lstCodigoPostal.Find(x => x.Codigo.Equals(Doc.Z_Reclamo.CPOSTAL)) != null)
                        {
                            CodpPContac = Doc.Z_Reclamo.CPOSTAL;
                            pRetval = pRetval.Replace("{29}", CodpPContac);
                        }
                        else
                        {
                            pRetval = pRetval.Replace("{29}", "");
                        }
            }
        }

        private List<GenericBE> cargarJustificacion(string pParam, List<JustificaionBE> resJust)
        {
            List<GenericBE> rpta = new List<GenericBE>();
            try
            {
                GenericBE j0 = new GenericBE();
                j0.Codigo = "";
                j0.Descripcion = "";
                rpta.Add(j0);
                foreach (JustificaionBE j in resJust)
                {
                    if (j.CodDep.Trim().Equals(pParam))
                    {
                        GenericBE i = new GenericBE();
                        i.Codigo = j.Codigo;
                        i.Descripcion = j.Descripcion;
                        rpta.Add(i);
                    }
                }
            }
            catch (Exception ex)
            {
                
            }
            return rpta;

        }
    }
}
